package main

import (
	"fmt"
	"sync"
	"time"
)

func work(wg *sync.WaitGroup, cannel chan bool) {
	defer wg.Done()
	for {
		select {
		default:
			println("hello", time.Now().UnixNano())
			// 正常工作
		case <-cannel:
			// 退出
			// return 终端  for 循环
			return
		}
		fmt.Println("---")
	}
}

func main() {

	// select 多个符合条件的执行规则.
	//ch := make(chan int)
	//go func() {
	//	for {
	//		select {
	//		case ch <- 0:
	//		case ch <- 1:
	//		}
	//	}
	//}()
	//for v := range ch {
	//	fmt.Println(v)
	//}

	// close 关闭 chan 管道
	cannel := make(chan bool)
	var wg sync.WaitGroup
	for i := 0; i < 10; i++ {
		wg.Add(1)
		go work(&wg, cannel)
	}

	time.Sleep(time.Second)
	close(cannel) // 发送信息给 chan cancel
	wg.Wait()

}
